package org.dromara.starter.jpacomment.service;

import org.dromara.starter.jpacomment.enums.IndexType;
import org.dromara.starter.jpacomment.enums.Nullable;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;

/**
 * 修改表注释和字段注释
 *
 * @author <a href="mailto:guzhongtao@middol.com">guzhongtao</a>
 */
public interface AlterCommentService {

    /**
     * 获取当前数据库 schema
     *
     * @return 数据库 schema
     */
    String getSchema();

    /**
     * 设置当前的schema
     */
    void setSchema(String schema);

    /**
     * 修改表注释
     *
     * @param tableName    表名称
     * @param tableComment 表注释
     */
    void alterTableComment(String tableName, String tableComment);


    /**
     * 修改表字段类型，长度
     *
     * @param tableName     表名称
     * @param columnName    字段名称
     * @param columnComment 字段注释
     * @param defaultValue  默认值
     * @param columnType    字段类型
     */
    void alterColumn(String tableName, String columnName, String columnType, Nullable nullable, String defaultValue, String columnComment);

    /**
     * 添加表字段 索引
     *
     * @param tableName     表名称
     * @param indexCompositeNames    字段名称
     * @param indexType     索引类型
     */
    void alterAddColumnIndex(String tableName, IndexType indexType, String indexName, List<String> indexCompositeNames);

    /**
     * 删除表字段 索引
     *
     * @param tableName     表名称
     */
    void alterDropColumnIndex(String tableName);


    /**
         * 获取  jdbcTemplate
         *
         * @param jdbcTemplate jdbcTemplate
         */
    void setJdbcTemplate(JdbcTemplate jdbcTemplate);
}
